//
//  NSDate+Extension.swift
//  WeiBo14
//
//  Created by HM on 16/3/9.
//  Copyright © 2016年 HM. All rights reserved.
//

import UIKit


extension NSDate {
    
    // 通过一个新浪的时间字符串转成NSDate
    class func sinaDateWithString(dateString: String?) -> NSDate? {
        // Tue May 31 17:46:55 +0800 2011
        
        guard let s = dateString else {
            return nil
        }
        
        // 初始化一个时间格式化器
        let fm = NSDateFormatter()
        // 指定时间字符串的格式
        // 2016-03-09 11:02:18
        // yyyy-MM-dd HH:mm:ss
        fm.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        fm.locale = NSLocale(localeIdentifier: "en")
        return fm.dateFromString(s)
    }
    
    
    var dateDescription: String? {
        let fm = NSDateFormatter()
        fm.locale = NSLocale(localeIdentifier: "en")
        // 取到日历对象
        let calendar = NSCalendar.currentCalendar()
        
        // 测试代码
        // d = NSDate().dateByAddingTimeInterval(-3601*24*366)
        // 判断是否是今年
        if isDateInThisYear(self) {
            // 判断是否是今天
            if calendar.isDateInToday(self) {
                // 取到微博创建时间与当前时间的秒差值
                let result = -self.timeIntervalSinceNow
                if result < 60 {
                    return "刚刚"
                }else if result < 3600 {
                    return "\(Int(result/60))分钟前"
                }else{
                    return "\(Int(result/3600))小时前"
                }
            }else if calendar.isDateInYesterday(self) {
                // 是昨天
                fm.dateFormat = "昨天 HH:mm"
                return fm.stringFromDate(self)
            }else{
                // 其他,显示 03-09 20:20
                fm.dateFormat = "MM-dd HH:mm"
                return fm.stringFromDate(self)
            }
        }else{
            // 不是今年,显示 2014-03-10
            fm.dateFormat = "yyyy-MM-dd"
            return fm.stringFromDate(self)
        }
    }
    
    /// 计算 target 是否是今年
    ///
    /// - parameter target:
    func isDateInThisYear(target: NSDate) -> Bool {
        // 首页先取出当前时间
        let currentDate = NSDate()
        // 怎么对比 ??? 因为我们只需要判断是否是今年,所以我们只需要将年份的字符串给格式化出来进行对比就可以了
        
        let fm = NSDateFormatter()
        fm.locale = NSLocale(localeIdentifier: "en")
        // 只取年
        fm.dateFormat = "yyyy"
        
        let currentDateYearStr = fm.stringFromDate(currentDate)
        let targetDateYearStr = fm.stringFromDate(target)
        
        return currentDateYearStr == targetDateYearStr
    }
    
    
}
